[CAN BaudRate]-SJA1000 BTR0 BTR1 Setting

友情提示:(1)有问题: 可以点击 右边中-在线咨询,左侧qq,旺旺在线联系
         (2)感兴趣: 可以点击 左侧中-分享到
如果是basic can  里面会有这些需要使用的寄存器
#define startadd 0xf700                    //SJA1000的首地址,其地址由CS片选输入端决定
#define CR           0x00                      //控制寄存器,里面主要控制中断使能位,和复位,can初始化必须在      复位模式下
#define CMR        0x01                      //命令寄存器,发送请求,清除数据溢出
#define SR           0x02                      //状态寄存器是只读的,一般用来读取状态值
#define IR             0x03                      //中断寄存器也是只读的,顾名思义就是读取什么触发的中断
#define ACR        0x04                      //验收代码
#define AMR        0x05            //验收屏蔽
#define BTR0       0x06                      //总线时序寄存器0,设置波特率
#define BTR1       0x07                      //总线时序寄存器1 ,设置波特率
#define OCR        0x08                      //输出控制寄存器 ,设置输出模式
#define TEST       0x09
///////////////////////////
/////yoyodvd///////////
/*发送*/
#define TXID0   0x0A   // 标准ID11位,这是高8ID
#define TXID1   0x0B   // 000RTR, DLC0-3  ,这里高3位是11ID的低3位,然后就是帧格式,再就是数据长度
#define TXDATA0 0x0C
#define TXDATA1 0x0D
#define TXDATA2 0x0E
#define TXDATA3 0x0F
#define TXDATA4 0x10
#define TXDATA5 0x11
#define TXDATA6 0x12
#define TXDATA7 0x13    8个就是8字节数据  
/////////////////////  
下面发送和接受几乎是一样的,唯一不同就是寻址不一样,如果采用的是pelican 接受和发送的寻址是一摸一样的   配置其实也很简单,看下SJA1000datasheet就懂了,有什么不懂再问我
/*接收*/
#define RXID0   0x14
#define RXID1   0x15
#define RXDATA0 0x16
#define RXDATA1 0x17
#define RXDATA2 0x18
#define RXDATA3 0x19
#define RXDATA4 0x1A
#define RXDATA5 0x1B
#define RXDATA6 0x1C
#define RXDATA7 0x1D
 
#define CDR 0X1F  // 时钟分频

 

SJA1000里面,basiccan 上有说,验收ACRAMR,校验高8ID,如果你是用广播方式的话,AMR = 0xffACR 随便都可以(ID10-3== ACR(7-0))|(AMR( 7  - 0)) = 1111,1111,所有的ID都可以接收  如果要接收指定ID,你根据这个公式,计算下就可以了